#include <UIKit/UITableViewDataSource.h>
#include <UIKit/UITableViewCell.h>
#include <UIKit/UIApplication.h>
#include <UIKit/UITableView.h>
#include <UIKit/UIWindow.h>
#include <UIKit/UIDevice.h>
#include <UIKit/UIView.h>

#include <QPainter>

#include "MainViewController.h"

class TableDataSource : public UITableViewDataSource {
    public:
        UITableViewCell *tableViewCellForRow (UITableView *tableView,
                                              uint section,
                                              uint row) const
        {
            UITableViewCell *cell = new UITableViewCell(tableView);
            cell->setText(QString("Section %1 Row %2").arg(section).arg(row));
            cell->setBoundingRect(0.0f, 0.0f, tableView->boundingRect().width(), 100);
            cell->setTextColor(Qt::white);
            return(cell);
        }

        uint tableViewNumberOfSections (UITableView *tableView) const {
            return(30);
        }

        uint tableViewNumberOfRowsInSection (UITableView *tableView, 
                                             uint section) const
        {
            return(5);
        }

        UITableViewCell *tableViewCellForHeaderInSection (UITableView *tableView, 
                                                  uint section) const
        {
            UITableViewCell *cell = new UITableViewCell(tableView);
            cell->setText(QString("Section Header %1").arg(section));
            cell->setBoundingRect(0.0f, 0.0f, tableView->boundingRect().width(), 60);
            cell->setTextColor(Qt::white);
            return(cell);
        }

        UITableViewCell *tableViewCellForFooterInSection (UITableView *tableView, 
                                                  uint section) const
        {
            UITableViewCell *cell = new UITableViewCell(tableView);
            cell->setText(QString("Section Footer %1").arg(section));
            cell->setBoundingRect(0.0f, 0.0f, tableView->boundingRect().width(), 60);
            cell->setTextColor(Qt::white);
            return(cell);
        }
};

MainViewController::MainViewController (QObject *parent)
    : UIViewController(parent)
{
}

MainViewController::~MainViewController() {
}

void MainViewController::viewDidLoad (void) {
    UIWindow *window = new UIWindow;
    UIApplication::sharedApplication()->setKeyWindow(window);

#if 1
    UITableView *tableView = new UITableView;
    tableView->setDataSource(new TableDataSource);
    tableView->setBoundingRect(0.0f, 0.0f, 480.0f, 640.0);
    window->addItem(tableView);
#else
    Keyboard *key = new Keyboard;
    key->setBoundingRect(0.0f, 0.0f, 480.0f, 300.0f);
    key->moveBy(0.0f, 340.0f);
    window->addItem(key);
#endif
}

void MainViewController::viewDidUnload (void) {
}

